/*
 * @Descripttion: 商品上传方法文件
 * @version: 
 * @Author: 一氧化二氢
 * @Date: 2022-01-02 20:26:58
 * @lastEditorTime: Do no edit
 */
const path = require("path")
const { filrUploadError, publishGoodsError,
    invalidGoodsID, upadteGoodsError, removeGoodsError, findGoodsError } = require('../constant/err.type')
const { createGoods, updateGoods, removeGoods, restoreGoods, findGoods } = require('../service/goods.service')
class GoodController {
    /**
     * @name: 
     * @test: test font
     * @msg: 文件上传方法
     * @return {*}
     * @param {*} ctx
     * @param {*} next
     */
    async upload(ctx, next) {
        const { file } = ctx.request.files
        const fileType = ['image/jpeg', 'image/png']
        try {
            if (file) {
                ctx.body = {
                    code: 0,
                    message: "商品图片上传成功",
                    result: {
                        goods_img: path.basename(file.path)
                    }
                }
            }
        } catch (err) {
            console.error("文件上传失败", err)
            return ctx.app.emit('error', filrUploadError, ctx)
        }


    }
    /**
     * @name: 
     * @test: test font
     * @msg: 负责创建商品
     * @return {*}
     * @param {*} ctx
     */
    async create(ctx) {
        //直接调用service的createGoods方法
        try {
            const { createdAt, updatedAt, ...res } = await createGoods(ctx.request.body)
            ctx.body = {
                code: 0,
                message: "商品发布成功",
                result: res,
            }
        } catch (err) {
            console.log("发布商品出错", err)
            return ctx.app.emit("error", publishGoodsError, ctx)
        }

    }

    /**
     * @name: 
     * @test: test font
     * @msg: 修改商品
     * @return {*}
     * @param {*} ctx
     */
    async update(ctx) {
        try {
            const id = ctx.request.params.id
            const goods = ctx.request.body
            const res = await updateGoods(id, goods)
            if (res) {
                ctx.body = {
                    code: 0,
                    message: "商品修改成功",
                    result: ""
                }
            } else {
                console.error("待修改的商品不存在")
                ctx.app.emit("error", invalidGoodsID, ctx)
            }
        } catch (err) {
            console.error("商品修改出错", err)
            ctx.app.emit("error", upadteGoodsError, ctx)
        }
    }

    /**
     * @name: 
     * @test: test font
     * @msg: 下架商品
     * @return {*}
     * @param {*} ctx
     */
    async remove(ctx) {
        try {
            const res = await removeGoods(ctx.request.params.id)
            if (res) {
                ctx.body = {
                    code: 0,
                    message: "下架商品成功",
                    result: ""
                }
            } else {
                console.error("无此商品id")
                ctx.app.emit("error", invalidGoodsID, ctx)

            }
        } catch (err) {
            console.error("下架商品出错", err)
            ctx.app.emit("error", removeGoodsError, ctx)
        }
    }
    /**
     * @name: 
     * @test: test font
     * @msg: 上架商品
     * @return {*}
     * @param {*} ctx
     */
    async restore(ctx) {
        try {
            const res = await restoreGoods(ctx.request.params.id)
            if (res) {
                ctx.body = {
                    code: 0,
                    message: "上架商品成功",
                    result: ""
                }
            } else {
                console.error("无此商品id")
                ctx.app.emit("error", invalidGoodsID, ctx)

            }
        } catch (err) {
            console.error("上架商品出错", err)
            ctx.app.emit("error", restoreGoodsError, ctx)
        }
    }

    async findAll(ctx) {
        const { pageNum = 1, pageSize = 10 } = ctx.request.query
        try {
            const res = await findGoods(pageNum, pageSize)
            if (res) {
                ctx.body = {
                    code: 0,
                    message: "获取列表成功",
                    result: res
                }
            }
        } catch (err) {
            console.error("获取商品列表出错", err)
            ctx.app.emit("error", findGoodsError, ctx)
        }

    }

}
module.exports = new GoodController()